////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include "Test_FSMGameImpl.hpp"

////////////////////////////////////////////////////////////
/// Constructor
////////////////////////////////////////////////////////////
Test_FSMGameImpl::Test_FSMGameImpl() :
    DefaultGameImpl(),
    m_bPaused( false )
{
}

////////////////////////////////////////////////////////////
/// Destructor
////////////////////////////////////////////////////////////
Test_FSMGameImpl::~Test_FSMGameImpl()
{
}

////////////////////////////////////////////////////////////
/// Init the game
////////////////////////////////////////////////////////////
void Test_FSMGameImpl::Init( sf::RenderWindow* _pRenderWindow ) {
    DefaultGameImpl::Init( _pRenderWindow );
}

////////////////////////////////////////////////////////////
/// DeInit the game
////////////////////////////////////////////////////////////
void Test_FSMGameImpl::DeInit() {
    DefaultGameImpl::DeInit();
}

////////////////////////////////////////////////////////////
/// Manage an incoming event
////////////////////////////////////////////////////////////
void Test_FSMGameImpl::ManageEvent( const sf::Event& _Event ) {
    DefaultGameImpl::ManageEvent( _Event );
    
    switch ( _Event.type ) {
    case sf::Event::KeyPressed:
        switch (_Event.key.code) {
        case sf::Keyboard::F1:
            m_bPaused = !m_bPaused;
            break;
        }
    }
}

////////////////////////////////////////////////////////////
/// Call all the Update in the other systems
////////////////////////////////////////////////////////////
void Test_FSMGameImpl::Update( float _fDeltaTime  ) {
    if ( !m_bPaused && m_TimerClock.getElapsedTime().asSeconds() > 1.0f ) {
        m_TimerClock.restart();
        DefaultGameImpl::Update( _fDeltaTime );
    }
}

////////////////////////////////////////////////////////////
/// Call all the Render in the other systems
////////////////////////////////////////////////////////////
void Test_FSMGameImpl::Render() {
    DefaultGameImpl::Render();
}